home *** CD-ROM | disk | FTP | other *** search
-
- ;
- ; for LSI-C
- ;
- ; 五味補助ライブラリ1
- ;
-
- IDEAL
- P8086
-
- CR EQU 0DH,0AH
- NULL EQU 00H
-
-
- PUBLIC printa_
- PUBLIC randomize_
- PUBLIC random_
- PUBLIC getnum_
-
-
- GROUP CGROUP TEXT
-
- SEGMENT TEXT PUBLIC "CODE"
-
- ASSUME CS:TEXT,DS:TEXT,ES:TEXT
-
- ;****************************************
- ; int printa(char *)
- ;****************************************
-
- PROC printa_
-
- PUSH DI
- XOR BX,BX
- MOV DI,AX
- @@_1:
- CMP [BYTE DI+BX],NULL
- JE @@_2
- MOV AL,[BYTE DI+BX]
- INT 29H
- INC BX
- JMP @@_1
- @@_2:
- MOV AX,BX
- POP DI
- RET
-
- ENDP
-
- ;****************************************
- ; void randomize(void)
- ;****************************************
-
- PROC randomize_
-
- PUSH CX
- PUSH DX
- MOV AH,2CH
- INT 21H
- MOV CH,DH
- MOV [WORD CS:BN],CX
- POP DX
- POP CX
-
- RET
-
- ENDP
-
-
- ;****************************************
- ; int random(int)
- ;****************************************
-
- PROC random_
-
- PUSH DX
- PUSH CX
- MOV BX,AX
- XOR AX,AX
- MOV AX,[WORD CS:BN]
- ADD AX,5353 ;自分の名前
- MOV CL,2
- ROL AL,CL
- MOV CL,3
- ROL AH,CL
- XCHG AL,AH
- ROL AX,CL
- MOV [WORD CS:BN],AX
-
- MUL BX
- MOV AX,DX
-
- POP CX
- POP DX
- RET
-
- BN:
- DW 12345
-
- ENDP
-
-
- ;****************************************
- ; int getnum(void)
- ;****************************************
-
- proc getnum_
-
- push dx
- push ds
- push bp
-
- mov bx,cs
- mov ds,bx
- mov ah,0ah
- mov dx,offset GETBUF
- int 21h
-
- XOR AX,AX
- XOR DX,DX
- XOR BP,BP
- DDDGET:
- CMP [BYTE DS:GETBUF+2+BP],0DH
- JE GET16BIT_END
-
- MOV BX,10
- MUL BX ;桁上げ
- CMP DX,00H
- JNE ERR_END ;もし16ビットをオーバーすればエラー
-
- MOV BL,[BYTE DS:GETBUF+2+BP]
- SUB BL,30H ;コード差引
- CMP BL,9
- JA ERR_END
- ADD AX,BX
- INC BP
-
- JMP DDDGET
-
- ERR_END:
- XOR AX,AX
- GET16BIT_END:
- POP BP
- POP DS
- POP DX
- RET
-
- GETBUF:
- db 10,?,10 dup(?)
-
- ENDP
-
-
- ENDS
- END
-